package com.hy.admin.dao;

import com.hy.admin.entity.CourseEntity;
import com.hy.admin.entity.CourseInfoEntity;
import com.hy.admin.helper.response.CourseResponse;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CourseDao {
    int deleteByPrimaryKey(Long id);

    int insert(CourseEntity record);

    int insertSelective(CourseEntity record);

    CourseEntity selectByPrimaryKey(Long id);

    CourseResponse selectById(Long id);

    int updateByPrimaryKeySelective(CourseEntity record);

    int updateByPrimaryKey(CourseEntity record);

    List<CourseResponse> selectByMemberId(Long memberId);

//    /**
//     * 查询教师的所有课程
//     * @param memberId
//     * @return
//     */
//    List<CourseInfoEntity> selectCourseByMemberId(Long memberId);
    /**
     * 查询课程系列下的所有课程
     * @param seriesId
     * @return
     */
    List<CourseInfoEntity> selectCourseBySeriesId(Long seriesId);
    /**
     * 根据关键字查询课程
     * @param keyword
     * @return
     */
    List<CourseInfoEntity> selectCourseByKeyword(String keyword);

    CourseEntity selectByUuId(String uuid);

    /**
     * 查询免费课程
     * @return
     */
    List<CourseInfoEntity> selectForFree();

    /**
     * 查询精品课，点击量前20
     * @return
     */
    List<CourseInfoEntity> selectForGreat();

    /**
     * 查询所有有效课程
     * @return
     */
    List<CourseInfoEntity> selectAll();

    /**
     * 增加点击量
     * @param courseId
     * @return
     */
    int updateClickNum(Long courseId);
    int updateAuditStatus(@Param("courseId") Long courseId, @Param("auditStatus") Integer auditStatus);

    int selectCountByMemberId(Long memberId);

    /**
     * 查询所有收费课程
     * @param title
     * @param nickName
     * @return
     */
    List<CourseInfoEntity> selectAllChargeCourse(@Param("title") String title, @Param("nickName") String nickName);

    /**
     * 查询所有免费课程
     * @param title
     * @param nickName
     * @return
     */
    List<CourseInfoEntity> selectAllFreeCourse(@Param("title") String title, @Param("nickName") String nickName);

    int cancelTop(List<Long> idList);

    int setTop(@Param("isFree") Integer isFree, @Param("list") List<Long> idList);

    int selectCountForTopAndFree(Integer isFree);
}